#ifndef CLIPBOARDMANAGER_H
#define CLIPBOARDMANAGER_H

#include <QObject>
#include <QClipboard>
#include <QMimeData>
#include <QTimer>
#include "clipboardItem.h"
#include "clipboardStorage.h"

class ClipboardManager : public QObject {
    Q_OBJECT

public:
    ClipboardManager(QObject* parent = nullptr);
    ~ClipboardManager();
    void startMonitoring();
    std::vector<ClipboardItem> getAllItems(ClipboardType type, bool favorite,const QString& searchQuery);
    void copyItem(const ClipboardItem& item);
    void deleteItem(const ClipboardItem& item);
    void searchItem(const ClipboardItem& item);
    void favoriteItem(const ClipboardItem& item);
    void openItem(const ClipboardItem &item);
//    void openInstanceItem(const ClipboardItem &item);
    bool isDuplicate(const ClipboardItem& newItem) const;
//    bool isImageDuplicate(const ClipboardItem& newItem) const;
    void getItemDetail(const ClipboardItem &item);
    ClipboardStorage* getStorage();
    void setClipboardType(ClipboardType type);
    void setClipboardFavorite(bool f);
    ClipboardType getClipboardType();
    bool getCLipboardFavorite();

signals:
    void updateItem(ClipboardType type, bool favorite, bool updatePosition); // 是否恢复上一页面的滚动条位置

private slots:
    void checkClipboard();

private:
    ClipboardStorage* storage;
    QClipboard* clipboard;
    const QMimeData* lastData;  // 记录上一个 QMimeData
    QString lastText;           // 记录上一个文本
    QString lastFilePath;       // 记录上一个文件路径
    QImage lastImage;           // 记录上一个图片
    ClipboardType type;         // 选中类别
    bool favorite;              // 选中收藏

};


#endif // CLIPBOARDMANAGER_H
